package com.ysstech.reportworld.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.TableField;

import java.io.Serializable;
import java.util.List;
import java.util.Objects;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 *
 * </p>
 *
 * @author lishuangliang
 * @since 2022-04-27
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("report_world_table_detail")
public class TableDetail extends Model<TableDetail> {

    private static final long serialVersionUID = 1L;

    @TableId("ID")
    private String id;

    /**
     * 关联表的主键
     */
    @TableField("TABLE_ID")
    private String tableId;

    /**
     * 字段名称
     */
    @TableField("COLUMN_NAME")
    private String columnName;

    /**
     * 中文表名
     */
    @TableField("COLUMN_CHINESE_NAME")
    private String columnChineseName;

    /**
     * 字段类型
     */
    @TableField("COLUMN_TYPE")
    private Integer columnType;

    /**
     * 字段长度
     */
    @TableField("COLUMN_LENGTH")
    private Integer columnLength;

    /**
     * 数字类型的时候小数位数
     */
    @TableField("COLUMN_DECIMAL")
    private Integer columnDecimal;

    /**
     * 字段描述
     */
    @TableField("COLUMN_DESCRIBE")
    private String columnDescribe;
    /**
     * 是否可为空 1.是 2否
     */
    @TableField("COLUMN_NULL")
    private Integer columnNull;

    /**
     * 默认值
     */
    @TableField("COLUMN_DEFAULT")
    private String columnDefault;
    /**
     * 原始字段，remane来源的字段
     */
    @TableField("ORIGINAL_COLUMN_NAME")
    private String originalColumName;
    /**
     * 主键1.主键，2非主键
     */
    @TableField("PRIMARY_KEY")
    private Integer primaryKey;
    /**
     * 业务主键1.主键，2非主键
     */
    @TableField("BUSINESS_PRIMARY_KEY")
    private Integer businessPrimaryKey;
    /**
     * 外键对应的表名
     */
    @TableField("FOREIGN_TABLE")
    private String foreignTable;

    /**
     * 外键对应表字段
     */
    @TableField("FOREIGN_TABLE_COLUMN")
    private String foreignTableColumn;

    /**
     * 字典编码
     */
    @TableField("CODE_NAME")
    private String codeName;

    /**
     * 版本号
     */
    @TableField("VERSION")
    private String version;

    /**
     * 字段顺序
     */
    @TableField("SEQUENCE")
    private Integer sequence;

    /**
     * 读取Execl时候的文件名称
     */
    @TableField("FILE_NAME")
    private String fileName;
    /**
     * 内容是否为中文 1 是2否 (基础数据表的，在不同库可能出现中文需要增加长度的情况)
     */
    @TableField("MATCHER_CHINESE_CONTENT")
    private Integer matcherChineseContent;
    /**
     * 状态
     */
    @TableField("STATUS")
    private Integer status;

    @TableField("ADD_TIME")
    private LocalDateTime addTime;

    @TableField("ADD_USER")
    private String addUser;

    @TableField("EDIT_TIME")
    private LocalDateTime editTime;

    @TableField("EDIT_USER")
    private String editUser;

    @TableField("DELETE_REASON")
    private String deleteReason;

    @Override
    protected Serializable pkVal() {
        return null;
    }

    // 页面展示的中文字段
    // 字段类型
    @TableField(exist = false)
    private String strColumnType;
    // 状态
    @TableField(exist = false)
    private String strStatus;
    //  所属模块
    @TableField(exist = false)
    private String strColumnModular;

    // 所属客户
    @TableField(exist = false)
    private String strColumnCustomer;

    //所属报表
    @TableField(exist = false)
    private String strColumnReport;

    //  所属模块
    @TableField(exist = false)
    private String columnModular;

    // 所属客户
    @TableField(exist = false)
    private String columnCustomer;
    //所属报表
    @TableField(exist = false)
    private String columnReport;

    //一个表对应客户集合
    @TableField(exist = false)
    private List<DataCustomer> listCustomer;
    //一个表对应模块集合
    @TableField(exist = false)
    private List<DataModular> listModular;
    //一个表对应报表集合
    @TableField(exist = false)
    private List<DataReport> listReport;
    //导出的时候如果带了版本，就导出 字段版本大于表版本的调整
    //  private String expVersion;

    //导出的时候用到的字段
    @TableField(exist = false)
    private String tableChineseName;
    @TableField(exist = false)
    private String tableName;
    @TableField(exist = false)
    private String strColumnNull;

    //一个表对应客户集合
    @TableField(exist = false)
    private List<String> listCustomerStr;
    @TableField(exist = false)
    private List<String> listModularStr;
    @TableField(exist = false)
    private List<String> listReportStr;

    /**
     * 表修改记录信息
     */
    @TableField(exist = false)
    private List<DataDemandBug> listDataDemandBug;


    /**
     * 表明细页面查询按照表条件筛选数据
     *
     * @param o
     * @return
     */
    @TableField(exist = false)
    private String layered;
    @TableField(exist = false)
    private String ftype;
    @TableField(exist = false)
    private String fsource;
}
